]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
workspace: Iterate windowSlots directly when allocating
authorJonas Dreßler <verdre@v0yd.nl>
Thu, 25 Feb 2021 10:50:44 +0000 (11:50 +0100)
committerMarge Bot <marge-bot@gnome.org>
Tue, 9 Mar 2021 15:40:49 +0000 (15:40 +0000)
We can save a little bit of time in this loop by iterating directly
over the windowSlots array instead of iterating through children and
then performing a search for the windowSlot. This saves more time and we
only spend 2.2 ms instead of 2.3 ms in vfunc_allocate() now.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1743>

js/ui/workspace.js

index 4fa113bac363f662fb2b0264c70a5f15b3621caf..37b13a46b1eace2119a1e871e2078094017f3101 100644 (file)
@@ -626,19 +626,12 @@ var WorkspaceLayout = GObject.registerClass({
         const inSessionTransition =
             this._overviewAdjustment.value <= ControlsState.WINDOW_PICKER;
 
-        for (const child of container) {
+        const nSlots = this._windowSlots.length;
+        for (let i = 0; i < nSlots; i++) {
+            const [x, y, width, height, child] = this._windowSlots[i];
             if (!child.visible)
                 continue;
 
-            // The fifth element in the slot array is the WindowPreview
-            const index = this._windowSlots.findIndex(s => s[4] === child);
-            if (index === -1) {
-                log('Couldn\'t find child %s in window slots'.format(child));
-                child.allocate(childBox);
-                continue;
-            }
-
-            const [x, y, width, height] = this._windowSlots[index];
             const windowInfo = this._windows.get(child);
 
             if (windowInfo.metaWindow.showing_on_its_workspace()) {